package com.example.gw_back_end.controller;

import com.example.gw_back_end.domain.PageParam;
import com.example.gw_back_end.domain.Result;
import com.example.gw_back_end.domain.entities.User;
import com.example.gw_back_end.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("user")
public class UserController {

    private final UserService userService;
    public UserController(UserService userService) {
        this.userService = userService;
    }

    // （三端用户登录）用户登录
    @PostMapping("login")
    public Result login(String account,String password,@RequestHeader("X-Client-Type") String clientType) {
        String token = userService.login(account,password,clientType);
        if (token != null){
            return Result.success("登录成功！", token);
        } else {
            return Result.error("登录失败!");
        }
    }

    // （三端用户退出）用户退出
    @PostMapping("logout")
    public Result logout(HttpServletRequest request, HttpServletResponse response) {
        if (userService.logout(request)){
            HttpSession session = request.getSession(false);
            if (session!= null) {
                session.invalidate();
            }
            return Result.success("退出成功！",null);
        } else {
            return Result.error("操作失败！");
        }
    }

    // 用户注册
    @PostMapping("register")
    public Result register(@RequestBody User user) {
        if (userService.register(user)) {
            return Result.success("注册成功！",null);
        } else {
            return Result.error("注册失败！");
        }
    }

    // 获取用户信息(用户自己获取自己的信息)
    @GetMapping("get_info")
    public Result getInfo() {
        return Result.success("用户信息获取成功！",userService.getInfo());
    }

    // 获取指定的用户信息
    @GetMapping("get_user_info")
    public Result getInfoById(Integer id) {
        return Result.success("用户信息获取成功！",userService.getUserInfo(id));
    }

    // 更新用户信息（用户自发更新）
    @PutMapping("update_user_info")
    public Result update(@RequestBody User user) {
        if (userService.updateInfo(user)){
            return Result.success();
        } else {
            return Result.error("更新用户信息失败,请稍后重试！");
        }
    }

    // 用户绑定邮箱
//    @PostMapping("add_email")
//    public Result addEmail(String email) {
//        if(userService.addEmail(email)){
//            return Result.success();
//        } else {
//            return Result.error("绑定失败，请稍后重试！");
//        }
//    }

    // 用户绑定手机号
//    @PostMapping("add_telephone")
//    public Result addTelephone(String telephone) {
//        if (userService.addTelephone(telephone)){
//            return Result.success();
//        } else {
//            return Result.error("绑定失败，请稍后重试！");
//        }
//    }

    // 更改用户密码
//    @PostMapping("change_password")
//    public Result changePassword(User client) {
//
//    }

    // 获取用户列表
    @GetMapping("get_user_list")
    public Result getUsers(PageParam pageParam,Integer accountType) {
        return Result.success(userService.getUserList(pageParam,accountType));
    }

    // 用户密码确认
    @PostMapping("confirm_password")
    public Result confirmPassword(String password){
        if (userService.confirmPassword(password)) {
            return Result.success();
        } else {
            return Result.error();
        }
    }
}
